var threeSum = function (nums) {
  const res = [],
    len = nums.length;
  // 将数组排序
  nums.sort((a, b) => a - b);
  for (let i = 0; i < len; i++) {
    let l = i + 1;
    let r = len - 1;
    let n = nums[i];
    if (nums[i] > 0) return res;

    if (nums[i] === nums[i - 1]) continue;

    while (l < r) {
      let Nl = nums[l];
      let Nr = nums[r];
      let sum = Nl + Nr + nums[i];

      if (sum < 0) {
        l++;
      }
      if (sum > 0) {
        r--;
      }

      if (sum == 0) {
        res.push([n, Nr, Nl]);
        while (l < r && nums[l] == nums[l + 1]) {
          l++;
        }
        while (l < r && nums[r] == nums[r - 1]) {
          r--;
        }

        l++;
        r--;
      }
    }
  }
  return res;
};
